package com.mine.yyb.modules.sys.service;

import java.util.List;
import java.util.Map;

import com.mine.yyb.common.utils.exception.MineException;
import com.mine.yyb.common.utils.execl.MineExcelReport;
import com.mine.yyb.common.utils.jdbc.MinePagination;
import com.mine.yyb.modules.sys.bo.OrderBO;
import com.mine.yyb.modules.sys.bo.UserBO;
import com.mine.yyb.modules.sys.vo.OrderVO;
import com.mine.yyb.modules.sys.vo.RyReportVO;

/**
 * <pre>
 * <一句话功能简述>
 * 
 * 订单信息service接口
 * 
 * <功能详细描述>
 * </pre>
 * 
 * @author xuganhua
 * @version [版本号, 2015年12月28日]
 * @see [相关类/方法]
 * @since [产品/模块版本]
 */
public interface IOrderService
{
    /**
     * <pre>
     * <一句话功能简述>
     * 
     * 保存订单信息
     * 
     * <功能详细描述>
     * </pre>
     *
     * @author xuganhua
     * @version [版本号, 2015年12月28日]
     * @param orderBO
     * @return
     * @throws MineException
     * @see [类、类#方法、类#成员]
     */
    public String saveOrder(OrderBO orderBO)
        throws MineException;
    
    /**
     * <pre>
     * <一句话功能简述>
     * 
     * 更新订单信息
     * 
     * <功能详细描述>
     * </pre>
     *
     * @author xuganhua
     * @version [版本号, 2016年1月20日]
     * @param orderBO
     * @return
     * @throws MineException
     * @see [类、类#方法、类#成员]
     */
    public String updateOrder(OrderBO orderBO)
        throws MineException;
    
    /**
     * <pre>
     * <一句话功能简述>
     * 
     * 查询用户的订单信息
     * 
     * <功能详细描述>
     * </pre>
     *
     * @author xuganhua
     * @version [版本号, 2015年12月28日]
     * @param userBO
     * @return
     * @throws MineException
     * @see [类、类#方法、类#成员]
     */
    public List<OrderVO> queryOrderList(UserBO userBO)
        throws MineException;
    
    /**
     * <pre>
     * <一句话功能简述>
     * 
     * 检查订单信息是否存在
     * 
     * <功能详细描述>
     * </pre>
     *
     * @author xuganhua
     * @version [版本号, 2015年12月29日]
     * @param orderBO
     * @return
     * @throws MineException
     * @see [类、类#方法、类#成员]
     */
    public boolean isOrderExist(OrderBO orderBO)
        throws MineException;
    
    /**
     * <pre>
     * <一句话功能简述>
     * 
     * 分页查询订单信息
     * 
     * <功能详细描述>
     * </pre>
     *
     * @author xuganhua
     * @version [版本号, 2016年1月3日]
     * @return
     * @throws MineException
     * @see [类、类#方法、类#成员]
     */
    public MinePagination<OrderVO> queryOrderList(OrderBO orderBO)
        throws MineException;
    
    public MinePagination<OrderVO> queryQtOrderList(OrderBO orderBO)
        throws MineException;
    
    /**
     * <一句话功能简述></br>
     * 
     * 分页查询订单信息
     *
     * <功能详细描述></br>
     * 
     * @param orderBO
     * @return
     * @throws MineException
     * @see [类、类#方法、类#成员]
     */
    public MinePagination<OrderVO> queryOrderListTo(OrderBO orderBO)
        throws MineException;
    
    public MinePagination<OrderVO> queryChildRebateList(OrderBO orderBO)
        throws MineException;
    
    /**
     * <pre>
     * <一句话功能简述>
     * 
     * 比对用户的登记订单信息，检查是否符合返利标准
     * 
     * <功能详细描述>
     * </pre>
     *
     * @author xuganhua
     * @version [版本号, 2016年1月9日]
     * @return
     * @throws MineException
     * @see [类、类#方法、类#成员]
     */
    public List<OrderVO> compareOrderCorrect()
        throws MineException;
    
    /**
     * <pre>
     * <一句话功能简述>
     * 
     * 比对用户的登记中亚订单信息，检查是否符合返利标准
     * 
     * <功能详细描述>
     * </pre>
     *
     * @author xuganhua 0118
     * @version [版本号, 2017年5月5日]
     * @return
     * @throws MineException
     * @see [类、类#方法、类#成员]
     */
    public List<OrderVO> compareCnamzOrderCorrect()
        throws MineException;
    
    public List<RyReportVO> compareJpamzOrderCorrect()
        throws MineException;
    
    /**
     * <一句话功能简述></br>
     * 
     * 条件求和查询
     *
     * <功能详细描述></br>
     * 
     * @param orderBO
     * @return
     * @throws MineException
     * @see [类、类#方法、类#成员]
     */
    public OrderVO querySum(OrderBO orderBO)
        throws MineException;
    
    public OrderVO queryQtSum(OrderBO orderBO)
        throws MineException;
    
    /**
     * <一句话功能简述></br>
     * 
     * 条件求和查询
     *
     * <功能详细描述></br>
     * 
     * @param orderBO
     * @return
     * @throws MineException
     * @see [类、类#方法、类#成员]
     */
    public OrderVO queryAllSum(OrderBO orderBO)
        throws MineException;
    
    public OrderVO queryAllSumChildRebate(OrderBO orderBO)
        throws MineException;
    
    /**
     * <一句话功能简述></br>
     * 
     * 查询我的佣金
     *
     * <功能详细描述></br>
     * 
     * @param orderBO
     * @return
     * @throws MineException
     * @see [类、类#方法、类#成员]
     */
    public MinePagination<Map<String, String>> queryRebate(OrderBO orderBO)
        throws MineException;
    
    /**
     * <一句话功能简述></br>
     * 
     * 查询指定用户的所有下线用户的返利贡献金额
     *
     * <功能详细描述></br>
     * 
     * @param orderBO
     * @return
     * @throws MineException
     * @see [类、类#方法、类#成员]
     */
    public MinePagination<Map<String, String>> queryChildRebate(OrderBO orderBO)
        throws MineException;
    
    /**
     * <一句话功能简述></br>
     * 
     * 查询所有用户的佣金
     *
     * <功能详细描述></br>
     * 
     * @param orderBO
     * @return
     * @throws MineException
     * @see [类、类#方法、类#成员]
     */
    public MinePagination<Map<String, String>> queryAllRebate(OrderBO orderBO)
        throws MineException;
    
    /**
     * <一句话功能简述></br>
     * 
     * 查询所有用户的所有下线用户的返利贡献金额
     *
     * <功能详细描述></br>
     * 
     * @param orderBO
     * @return
     * @throws MineException
     * @see [类、类#方法、类#成员]
     */
    public MinePagination<Map<String, String>> queryAllChildRebate(OrderBO orderBO)
        throws MineException;
    
    /**
     * <一句话功能简述></br>
     * 
     * 导出订单数据
     *
     * <功能详细描述></br>
     * 
     * @param orderBO
     * @return
     * @throws MineException
     * @see [类、类#方法、类#成员]
     */
    public MineExcelReport exportOrderData(OrderBO orderBO)
        throws MineException;
    
    public MineExcelReport exportQtOrderData(OrderBO orderBO)
        throws MineException;
    
    /**
     * <一句话功能简述></br>
     * 
     * 导出所有的订单数据
     *
     * <功能详细描述></br>
     * 
     * @param orderBO
     * @return
     * @throws MineException
     * @see [类、类#方法、类#成员]
     */
    public MineExcelReport exportAllOrderData(OrderBO orderBO)
        throws MineException;
    
    /**
     * <一句话功能简述></br>
     * 
     * 导出所有的返利数据
     *
     * <功能详细描述></br>
     * 
     * @param orderBO
     * @return
     * @throws MineException
     * @see [类、类#方法、类#成员]
     */
    public MineExcelReport exportAllRebateData(OrderBO orderBO)
        throws MineException;
    
    /**
     * <一句话功能简述></br>
     * 
     * 导出所有用户的贡献返利额
     *
     * <功能详细描述></br>
     * 
     * @param orderBO
     * @return
     * @throws MineException
     * @see [类、类#方法、类#成员]
     */
    public MineExcelReport exportAllChildRebateData(OrderBO orderBO)
        throws MineException;
    
    public void deleteOrder(OrderBO orderBO)
        throws MineException;
    
}
